// 想要使用必须先引入 defineStore；
import { defineStore } from 'pinia';

// 第二个参数是选项，对象里面有三个属性，相比于vuex 少了一个 mutations.
export const userInFoPinia = defineStore({
  id: 'userInFo',
  state: () => {
    // 存放的就是模块的变量
    return {
      userDom: {},
      adminList:['P0001'],
      isAuthenticated: false,
      isAdmin: false,
    };
  },
  actions: {
    // 可以通过actions 方法，改变 state 里面的值。
    // 要观察作用域范围
    updateDom(param: any) {
      this.userDom = param;
    },
    setAuthenticationStatus(isAuthenticated, isAdmin) {
      this.isAuthenticated = isAuthenticated
      this.isAdmin = isAdmin
    }
  },
  persist: {
    //  固化插件
    enabled: true, // 开启存储
    strategies: [
      // 指定存储的位置以及存储的变量都有哪些，该属性可以不写，
      //在不写的情况下，默认存储到 sessionStorage 里面,默认存储 state 里面的所有数据。
      { storage: localStorage, paths: ['dataBox'] },
    ],
  },
});

export default userInFoPinia;
